package com.example.synccenter.identitysource.processor;

import com.example.synccenter.identitysource.core.IdentitySourcePostProcessor;
import lombok.extern.slf4j.Slf4j;

import java.util.Map;

/**
 * 抽象身份源后处理器，统一实现日志输出和模板方法，子类只需实现doProcess。
 */
@Slf4j
public abstract class AbstractIdentitySourcePostProcessor implements IdentitySourcePostProcessor {
    /**
     * 处理器名称，用于日志输出
     */
    protected final String processorName;

    /**
     * 构造方法
     *
     * @param processorName 处理器名称
     */
    public AbstractIdentitySourcePostProcessor(String processorName) {
        this.processorName = processorName;
    }

    @Override
    public void process(Map<String, Object> data, Map<String, Object> context) {
        log.info("[{}] 开始处理数据...", processorName);
        doProcess(data, context);
        log.info("[{}] 数据处理完成", processorName);
    }

    /**
     * 子类实现具体处理逻辑
     *
     * @param data    同步数据
     * @param context 同步上下文
     */
    protected abstract void doProcess(Map<String, Object> data, Map<String, Object> context);
} 